# -*- coding: utf-8 -*-
'''
Este handler muestra la página de registro
'''
from basehandler import BaseHandler
from modelos.usuario import Usuario

class RegistroHandler(BaseHandler):
    def get(self):
        self.inicio()
        if not self.esta_logueado():
            self.d['b_titulo'] = 'Registro'
            self.response.write(self.render('registro.html', **self.d))
        else:
            self.redirect('/aviso/1')
        
    def post(self):
        '''
        Aqui viene lo gordo. Hay que comprobar:
        - Que el correo no exista.
        - Que el nombre de usuario no exista y solo contenga los caracteres
          adecuados.
        - Que las dos contrasenyas coincidan.
        - Si alguna de estas condiciones falla:
          * Volver a mostrar la pagina con los mensajes de error adecuados.
        - En caso contrario
          * Insertarlo en la base de datos con el estado SIN ACTIVAR.
        - Si pasa un dia y no se ha activado:
          * Borrarlo de la base de datos.
        '''
        self.inicio()
        if not self.esta_logueado():
            self.d['b_titulo'] = 'Registro'
            u = self.request.get('usuario')
            m = self.request.get('correo')
            p1 = self.request.get('contrasena_a')
            p2 = self.request.get('contrasena_b')
            error = False
            if self.comprueba_username(u):
                if Usuario.buscar_por_nombre(u):
                    error = True
                    self.d['error_usuario'] = u'Ya existe un usuario con ese nombre'
                else:
                    self.d['usuario'] = u
            else:
                error = True
                self.d['error_usuario'] = u'El nombre de usuario no es válido. Solo se admiten entre tres y veinte caracteres, pudiendo ser mayúsculas, minúsculas, dígitos y guiones bajos.' 
            if self.comprueba_mail(m):
                if Usuario.buscar_por_mail(m, key = True):
                    error = True
                    self.d['error_correo'] = u'La dirección de correo ya está en uso en la base de datos. Introduzca otra'
                else:
                    self.d['correo'] = m
            else:
                error = True
                self.d['error_correo'] = u'La dirección de correo no parece ser válida.'
            if not (self.comprueba_password(p1) and self.comprueba_password(p2) and p1 == p2):
                error = True
                self.d['error_password'] = u'La contraseña debe tener entre ocho y veinte caracteres y debe ser igual en los dos campos'
            else:
                self.d['pass'] = p1
            if error:
                self.response.write(self.render('registro.html', **self.d))
            else:
                Usuario.insertar_usuario(m, p1, u)
                self.redirect('/aviso/2')           
        else:
            self.redirect('/aviso/1')
